package cn.bdqn.controller;

import cn.bdqn.domain.Base;
import cn.bdqn.service.BaseService;
import cn.bdqn.utils.result.Page;
import cn.bdqn.utils.result.Result;
import cn.bdqn.utils.result.ResultGenerator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 基地功能 Controller
 * @author fxy
 */
@RestController
@RequestMapping("/base")
public class BaseController {
    @Autowired
    private BaseService bs;

    /**
     * 查询全部信息
     * @param startNumber 起始页
     * @param pageSize
     * @return 分页后信息
     */
    @RequestMapping("/getAll")
    public Result getAllBaseByPage(Integer startNumber,Integer pageSize)throws Exception{

        try {
            Page<Base> basePage = bs.queryAllBaseByPage(startNumber,pageSize);
            return ResultGenerator.genSuccessListResult(basePage.getMenuList(),basePage.getTotalRecord());
        }catch (Exception e){
            e.printStackTrace();
            throw new Exception(e.getMessage());
        }
    }

    /**
     * 根据id查询信息
     * @param id 基地编号
     * @return 基地信息
     */
    @RequestMapping("/getBaseById")
    public Result getBaseById(Integer id)throws Exception{

        try {
            //查询信息
            Base base = bs.queryBaseById(id);
            //放入结果处理
            return ResultGenerator.genSuccessResult(base);
        }catch (Exception e){
            e.printStackTrace();
            //返回错误处理信息
            throw new Exception(e.getMessage());
        }
    }

    /**
     * 根据所属人查询基地信息 分页
     * @param baseId 所属人
     * @return 分页信息
     */
    @RequestMapping("/getBaseByBaseId")
    public Result getBaseByBaseId(Integer baseId)throws Exception{
        try {
            Base base = bs.queryBaseByBaseId(baseId);
            return ResultGenerator.genSuccessResult(base);
        }catch (Exception e){
            e.printStackTrace();
            throw new Exception(e.getMessage());
        }
    }

    /**
     * 多条件查询
     * @param startNumber
     * @param base
     * @return
     */
    @RequestMapping("/getByMany")
    public Result getBaseByMany(Integer startNumber,Integer pageSize, Base base)throws Exception{

        try {
            Page<Base> basePage = bs.queryBaseByMany(startNumber, pageSize,base);

            return ResultGenerator.genSuccessListResult(basePage.getMenuList(),basePage.getTotalRecord());
        }catch (Exception e){
            e.printStackTrace();
            throw new Exception(e.getMessage());
        }
    }

    /**
     * 添加一条基地信息
     * @param base 前端传来的基地信息
     * @return  结果处理信息
     */
    @RequestMapping("/add")
    public Result addBase(Base base)throws Exception{
        try {
            //调用添加方法
            bs.addOneBase(base);
            //返回成功结果
            return ResultGenerator.genSuccessResult(base);
        }catch (Exception e){
            e.printStackTrace();
            throw new Exception(e.getMessage());
        }
    }

    /**
     * 修改信息
     * @param base  前端传来的基地信息
     * @return 结果处理信息
     */
    @RequestMapping("/update")
    public Result updateBase(Base base)throws Exception{
        try {
            //调用更新
            bs.editBaseById(base);
            //返回成功结果
            return ResultGenerator.genSuccessResult();
        }catch (Exception e){
            e.printStackTrace();
            throw new Exception(e.getMessage());
        }
    }


}
